package leetcode_700;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

import helpclass.TreeNode;

/**
 *@author 周杨
 *AverageOfLevelsInBinaryTree_637 计算二叉树的每一层的平均值
 *describe:层次遍历即可 AC 100%
 *2018年9月24日 上午10:45:03
 */
public class AverageOfLevelsInBinaryTree_637 {
	public List<Double> averageOfLevels(TreeNode root) {
        List<Double>res=new ArrayList<Double>();
        if(root==null)
        	return res;
        Queue<TreeNode> queue=new LinkedList<TreeNode>();
        queue.add(root);
        while(!queue.isEmpty()) {
        	int size=queue.size();
        	double sum=0;
        	int s=size;
        	while(s!=0) {
        		TreeNode now=queue.poll();
        		sum+=now.val;
        		--s;
        		if(now.left!=null)
        			queue.offer(now.left);
        		if(now.right!=null)
        			queue.offer(now.right);
        	}
        	res.add(sum/size);
        }
        return res;
    }
}
